square root algorithm